import type { Channnel, ArticleListParams, ArticleListResponse } from '@/types/article'
import request from '@/utils/request'

/**
 * @description: 内容管理频道函数
 * @return {*} promise<Article>
 * 其中的字段有:
 * - channels: 频道列表
 *   - id: 频道id
 *   - name: 频道名称
 * @requestMethod GEt
 * @requestUrl /v1_0/channels
 * wd 文档注释
 * bz 块级注释
 */
export const fetchChannelsAPI = () => {
  return request<Channnel>('/v1_0/channels')
}

/**
 * 获取文章列表的API接口
 *
 * 该接口用于从服务器获取指定条件下的文章列表数据。通过传递不同的查询参数，可以筛选出符合特定条件的文章。
 * 返回的数据格式为 `ArticleListResponse`，包含当前页数、每页数量、文章总数以及文章列表。
 * 每篇文章对象包含文章的基本信息，如标题、状态、评论数量等。
 *
 * @param params - 请求参数对象，包含分页和筛选条件等信息：
 *   - `status` (可选): 文章状态。0 - 草稿、1 - 待审核、2 - 审核通过、3 - 审核失败。
 *   - `channel_id` (必填): 频道id。不传为全部频道。
 *   - `begin_pubdate` (可选): 起始时间，格式为 ISO 8601 标准时间字符串（例如：`2023-10-01T00:00:00Z`）。
 *   - `end_pubdate` (可选): 截止时间，格式同上。
 *   - `page` (可选): 页码，默认为 1 页。
 *   - `per_page` (可选): 每页数量，默认为 10 条。
 *
 * @returns {Promise<ArticleListResponse>} - 返回一个Promise对象，解析为包含文章列表响应数据的对象，结构如下：
 *   - `page`: 当前页数。
 *   - `per_page`: 每页数量。
 *   - `results`: 文章列表，数组中的每个元素都是一个 `Article` 对象。
 *     - `id`: 文章id。
 *     - `title`: 文章标题。
 *     - `status`: 文章状态。
 *     - `comment_count`: 评论数量。
 *     - `pubdate`: 发布时间。
 *     - `cover`: 封面信息，包含封面类型和图片。
 *       - `type`: 封面类型。0 - 无封面、1 - 单图、3 - 3张封面。
 *       - `images`: 封面图片数组。
 *     - `like_count`: 点赞数量。
 *     - `read_count`: 阅读数。
 *   - `total_count`: 文章总数。
 *
 * @example
 * ```typescript
 * const params = {
 *   channel_id: 1,
 *   page: 1,
 *   per_page: 10
 * };
 * getArticleListAPI(params).then(response => {
 *   console.log(response.results); // 输出文章列表
 * }).catch(error => {
 *   console.error('获取文章列表失败:', error);
 * });
 * ```
 */
export const getArticleListAPI = (params: ArticleListParams) => {
  return request<ArticleListResponse>('/v1_0/mp/articles', 'GET', params)
}


/**
 * 删除文章的API接口
 *
 * 该接口用于从服务器删除指定文章。通过传递文章的id，可以删除对应的文章。
 *
 * @param id - 文章id
 *
 * @returns {Promise<void>} - 返回一个Promise对象，解析为空，表示删除成功。
 *
 * @example
 * ```typescript
 * const articleId = '1234567890';
 * deleteArticleAPI(articleId).then(() => {
 *  console.log('文章删除成功');
 * })
 * ```
*/
export const deleteArticleAPI = (id: string) => {
  return request(`/v1_0/mp/articles/${id}`, 'DELETE')
}
